// study01.jade
// var user = {desc: '我喜欢游戏'}
- if (user.desc)
	h2 描述
	p.desc #{user.desc}
- else 
	h1 描述
	p.desc 用户无描述
- var s = 'world'
p hello #{s}

- console.log('hello'); // 这段代码在服务端执行
- var ss = 'hello world' // 在服务端空间中定义变量
p #{ss}
p= ss
p `p= ss` // 如果要使用`=`,必须紧贴着标签

// 使用 unless 类似于 if 后的表达式加上了 ! 取反
// 注意这个 unless 是 jade 提供的关键字，不是运行的 js 代码
// 如果`-unless user1.isVip` : SyntaxError: Unexpected token 
- var user1 = {name: 'Alan', isVip: false}
unless user1.isVip
	p 亲爱的 #{user1.name} 您还不是 VIP

// 循环
- var arr = [1,2,3]
ul
	-for (var i=0;i<arr.length; i++){
		li hello #{arr[i]}
	-}

// 同样的 jade 对于循环液提供了省略 “-” 减号的写法
ul 
	each val, index in ['西瓜', '苹果', '梨子']
		li= index + ': ' + val

// 该方法同样适用于 json 数据
ul 
	each val, index in {1:'苹果',2:'梨子',3:'乔布斯'}
		li= index + ': ' + val

// case
- var friends = 1
case friends
	when 0: p you have no friends
	when 1: p you have a friends
	default: p you have #{friends} friends

- var friends = 10
case friends
	when 0
		p you have no friends
	when 1
		p you have a friends
	default 
		p you have #{friends} friends

// 在模板中调用其他语言
// 必须有响应的模块

// 申明可重用的块
mixin list
	ul
		li foo
		li bar
		li baz
// 调用
+list()
+list()

// 你也可以给这个重用块指定参数
mixin pets(pets)
	ul.pets
		-each pet in pets
			li= pet

+pets(['cat', 'dog', 'pig'])
+pets(['bird', 'dog', 'pig'])

// Mixins 同时也支持在外部传入 jade 块
mixin article(title)
	.article
		.article-wrapper
			h1= title
			//- block 为 jade 关键字代表外部传入的块
			if block
				block
			else
				p 该文章没有内容

+article('Hello world')
+article('Hello Jade')
	p 这里是外部传入的块
	p 在写两句

// Mixins 同时也可以从外部获取属性。
// `!=` 与 `=` 意思相同！
mixin link(href, name)
	p
		a(class!=attributes.class, href=href)= name
mixin link2(href, name)
	p
		a(class=attributes.class, href=href)= name

+link('/foo', 'foo')(class="btn")
+link2('/foo', 'foo')(class="btn")

// 模板包含 (Includes)
// 你可以使用 Includes 在模板中包含其他模板的内容。就像 PHP 里的 include 一样。
// 参考"study_include.jade"

// 模板引用 (Extends)
// 通过 Extends 可以引用外部的 jade 块，感觉比 include 要好用















